/*
  将下面异步代码使用 Promise 的方法改进
  尽量用看上去像同步代码的方式
  setTimeout(function () {
    var a = 'hello'
    setTimeout(function () {
      var b = 'lagou'
      setTimeout(function () {
        var c = 'I ♥ U'
        console.log(a + b +c)
      }, 10)
    }, 10)
  }, 10)
*/

// 方案 1:
// Promise.resolve('').then(() => {
//   return new Promise(resolve => {
//     setTimeout(() => {
//       var a = 'hello '
//       console.log("1")
//       resolve(a)
//     }, 10);
//   })
// }).then(value => {
//   return new Promise(resolve => {
//     setTimeout(() => {
//       var b = 'lagou '
//       console.log("2")
//       resolve(value + b)
//     }, 10);
//   })
// }).then(value => {
//   return new Promise(resolve => {
//     setTimeout(() => {
//       var c = 'I ♥ U'
//       console.log("3")
//       resolve(value + c)
//     }, 10);
//   })
// }).then(value => {
//   console.log(value)
// })


// 方案 2:
let promise = value => {
  if (value !== '' && value !== null && value !== undefined) {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve(value)
      }, 10)
    })
  }
  return Promise.resolve('');
}


promise('').then(value => {
  console.log("1")
  let a = 'hello '
  return promise(value + a)
}).then(value => {
  console.log("2")
  let b = 'lagou '
  return promise(value + b)
}).then(value => {
  console.log("3")
  let c = 'I ♥ U'
  return promise(value + c)
}).then(value => {
  console.log("4")
  console.log(value)
})

